Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / Sideband.git / files / sbapp / pmqtt / reasoncodes.py

Displaying Raw • Download


sbapp/pmqtt/reasoncodes.py 2.0.1 (486a97e4) Text, 9.65 KB

T8b949e# *******************************************************************
T8b949e# Copyright (c) 2017, 2019 IBM Corp.
T8b949e#
T8b949e# All rights reserved. This program and the accompanying materials
T8b949e# are made available under the terms of the Eclipse Public License v2.0
T8b949e# and Eclipse Distribution License v1.0 which accompany this distribution.
T8b949e#
T8b949e# The Eclipse Public License is available at
T8b949e# http://www.eclipse.org/legal/epl-v20.html
T8b949e# and the Eclipse Distribution License is available at
T8b949e# http://www.eclipse.org/org/documents/edl-v10.php.
T8b949e#
T8b949e# Contributors:
T8b949e# Ian Craggs - initial implementation and/or documentation
T8b949e# *******************************************************************

Tff7b72import T7ee787functools
Tff7b72import T7ee787warnings
Tff7b72from T7ee787typing Tff7b72import Te6edf3Any

Tff7b72from T7ee787.T7ee787packettypes Tff7b72import Te6edf3PacketTypes


Tf0883e@functoolsTff7b72.Td2a8fftotal_ordering
Tff7b72class T56d364ReasonCodeTb4b4b4:
T8b949e"""MQTT version 5.0 reason codes class.

See ReasonCode.names for a list of possible numeric values along with their
names and the packets to which they apply.

"""

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3packetTypeTb4b4b4: Tffa657intTb4b4b4, Te6edf3aNameTb4b4b4: Tffa657str Tff7b72=Ta5d6ff"Ta5d6ffSuccessTa5d6ff"Tb4b4b4, Te6edf3identifierTb4b4b4: Tffa657int Tff7b72=Tff7b72-T79c0ff1Tb4b4b4)Tb4b4b4:
T8b949e"""
packetType: the type of the packet, such as PacketTypes.CONNECT that
this reason code will be used with. Some reason codes have different
names for the same identifier when used a different packet type.

aName: the String name of the reason code to be created. Ignored
if the identifier is set.

identifier: an integer value of the reason code to be created.

"""

Tff7b72selfTff7b72.Td2a8ffpacketType Tff7b72= Te6edf3packetType
Tff7b72selfTff7b72.Td2a8ffnames Tff7b72= Tb4b4b4{
T79c0ff0Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffSuccessTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffPUBACKTb4b4b4,
Te6edf3PacketTypesTff7b72.Td2a8ffPUBRECTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffPUBRELTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffPUBCOMPTb4b4b4,
Te6edf3PacketTypesTff7b72.Td2a8ffUNSUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffAUTHTb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffNormal disconnectionTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4,
Ta5d6ff"Ta5d6ffGranted QoS 0Ta5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffSUBACKTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff1Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffGranted QoS 1Ta5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffSUBACKTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff2Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffGranted QoS 2Ta5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffSUBACKTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff4Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffDisconnect with will messageTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff16Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffNo matching subscribersTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffPUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffPUBRECTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff17Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffNo subscription foundTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffUNSUBACKTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff24Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffContinue authenticationTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffAUTHTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff25Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffRe-authenticateTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffAUTHTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff128Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffUnspecified errorTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffPUBACKTb4b4b4,
Te6edf3PacketTypesTff7b72.Td2a8ffPUBRECTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffSUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffUNSUBACKTb4b4b4,
Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4, Tb4b4b4}Tb4b4b4,
T79c0ff129Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffMalformed packetTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff130Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffProtocol errorTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff131Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffImplementation specific errorTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4,
Te6edf3PacketTypesTff7b72.Td2a8ffPUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffPUBRECTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffSUBACKTb4b4b4,
Te6edf3PacketTypesTff7b72.Td2a8ffUNSUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4, Tb4b4b4}Tb4b4b4,
T79c0ff132Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffUnsupported protocol versionTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff133Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffClient identifier not validTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff134Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffBad user name or passwordTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff135Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffNot authorizedTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffPUBACKTb4b4b4,
Te6edf3PacketTypesTff7b72.Td2a8ffPUBRECTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffSUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffUNSUBACKTb4b4b4,
Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4, Tb4b4b4}Tb4b4b4,
T79c0ff136Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffServer unavailableTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff137Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffServer busyTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff138Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffBannedTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff139Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffServer shutting downTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff140Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffBad authentication methodTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff141Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffKeep alive timeoutTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff142Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffSession taken overTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff143Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffTopic filter invalidTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffSUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffUNSUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff144Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffTopic name invalidTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffPUBACKTb4b4b4,
Te6edf3PacketTypesTff7b72.Td2a8ffPUBRECTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff145Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffPacket identifier in useTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffPUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffPUBRECTb4b4b4,
Te6edf3PacketTypesTff7b72.Td2a8ffSUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffUNSUBACKTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff146Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffPacket identifier not foundTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffPUBRELTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffPUBCOMPTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff147Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffReceive maximum exceededTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff148Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffTopic alias invalidTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff149Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffPacket too largeTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff150Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffMessage rate too highTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff151Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffQuota exceededTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffPUBACKTb4b4b4,
Te6edf3PacketTypesTff7b72.Td2a8ffPUBRECTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffSUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4, Tb4b4b4}Tb4b4b4,
T79c0ff152Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffAdministrative actionTa5d6ff"Tb4b4b4: Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff153Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffPayload format invalidTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffPUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffPUBRECTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff154Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffRetain not supportedTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff155Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffQoS not supportedTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff156Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffUse another serverTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff157Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffServer movedTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff158Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffShared subscription not supportedTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffSUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff159Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffConnection rate exceededTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffCONNACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff160Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffMaximum connect timeTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff161Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffSubscription identifiers not supportedTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffSUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
T79c0ff162Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffWildcard subscription not supportedTa5d6ff"Tb4b4b4:
Tb4b4b4[Te6edf3PacketTypesTff7b72.Td2a8ffSUBACKTb4b4b4, Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECTTb4b4b4]Tb4b4b4}Tb4b4b4,
Tb4b4b4}
Tff7b72if Te6edf3identifier Tff7b72== Tff7b72-T79c0ff1Tb4b4b4:
Tff7b72if Te6edf3packetType Tff7b72== Te6edf3PacketTypesTff7b72.Td2a8ffDISCONNECT Tff7b72and Te6edf3aName Tff7b72== Ta5d6ff"Ta5d6ffSuccessTa5d6ff"Tb4b4b4:
Te6edf3aName Tff7b72= Ta5d6ff"Ta5d6ffNormal disconnectionTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffsetTb4b4b4(Te6edf3aNameTb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffvalue Tff7b72= Te6edf3identifier
Tff7b72selfTff7b72.Td2a8ffgetNameTb4b4b4(Tb4b4b4) T8b949e# check it's good

Tff7b72def Td2a8ff__getName__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3packetTypeTb4b4b4, Te6edf3identifierTb4b4b4)Tb4b4b4:
T8b949e"""
Get the reason code string name for a specific identifier.
The name can vary by packet type for the same identifier, which
is why the packet type is also required.

Used when displaying the reason code.
"""
Tff7b72if Te6edf3identifier Tff7b72not Tff7b72in Tff7b72selfTff7b72.Td2a8ffnamesTb4b4b4:
Tff7b72raise Tf85149KeyErrorTb4b4b4(Te6edf3identifierTb4b4b4)
Te6edf3names Tff7b72= Tff7b72selfTff7b72.Td2a8ffnamesTb4b4b4[Te6edf3identifierTb4b4b4]
Te6edf3namelist Tff7b72= Tb4b4b4[Te6edf3name Tff7b72for Te6edf3name Tff7b72in Te6edf3namesTff7b72.Td2a8ffkeysTb4b4b4(Tb4b4b4) Tff7b72if Te6edf3packetType Tff7b72in Te6edf3namesTb4b4b4[Te6edf3nameTb4b4b4]Tb4b4b4]
Tff7b72if Tffa657lenTb4b4b4(Te6edf3namelistTb4b4b4) Tff7b72!= T79c0ff1Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffExpected exactly one name, found Tffd700{Te6edf3namelistTffd700!r}Ta5d6ff"Tb4b4b4)
Tff7b72return Te6edf3namelistTb4b4b4[T79c0ff0Tb4b4b4]

Tff7b72def Td2a8ffgetIdTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3nameTb4b4b4)Tb4b4b4:
T8b949e"""
Get the numeric id corresponding to a reason code name.

Used when setting the reason code for a packetType
check that only valid codes for the packet are set.
"""
Tff7b72for Te6edf3code Tff7b72in Tff7b72selfTff7b72.Td2a8ffnamesTff7b72.Td2a8ffkeysTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3name Tff7b72in Tff7b72selfTff7b72.Td2a8ffnamesTb4b4b4[Te6edf3codeTb4b4b4]Tff7b72.Td2a8ffkeysTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffpacketType Tff7b72in Tff7b72selfTff7b72.Td2a8ffnamesTb4b4b4[Te6edf3codeTb4b4b4]Tb4b4b4[Te6edf3nameTb4b4b4]Tb4b4b4:
Tff7b72return Te6edf3code
Tff7b72raise Tf85149KeyErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffReason code name not found: Tffd700{Te6edf3nameTffd700}Ta5d6ff"Tb4b4b4)

Tff7b72def Td2a8ffsetTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3nameTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffvalue Tff7b72= Tff7b72selfTff7b72.Td2a8ffgetIdTb4b4b4(Te6edf3nameTb4b4b4)

Tff7b72def Td2a8ffunpackTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3bufferTb4b4b4)Tb4b4b4:
Te6edf3c Tff7b72= Te6edf3bufferTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3name Tff7b72= Tff7b72selfTff7b72.Td2a8ff__getName__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffpacketTypeTb4b4b4, Te6edf3cTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffvalue Tff7b72= Tff7b72selfTff7b72.Td2a8ffgetIdTb4b4b4(Te6edf3nameTb4b4b4)
Tff7b72return T79c0ff1

Tff7b72def Td2a8ffgetNameTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e"""Returns the reason code name corresponding to the numeric value which is set.
"""
Tff7b72return Tff7b72selfTff7b72.Td2a8ff__getName__Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffpacketTypeTb4b4b4, Tff7b72selfTff7b72.Td2a8ffvalueTb4b4b4)

Tff7b72def Tff7b72__eq__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3otherTb4b4b4)Tb4b4b4:
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3otherTb4b4b4, Tffa657intTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffvalue Tff7b72== Te6edf3other
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3otherTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3other Tff7b72== Tffa657strTb4b4b4(Tff7b72selfTb4b4b4)
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3otherTb4b4b4, Te6edf3ReasonCodeTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffvalue Tff7b72== Te6edf3otherTff7b72.Td2a8ffvalue
Tff7b72return Tff7b72False

Tff7b72def Tff7b72__lt__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3otherTb4b4b4)Tb4b4b4:
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3otherTb4b4b4, Tffa657intTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffvalue Tff7b72< Te6edf3other
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3otherTb4b4b4, Te6edf3ReasonCodeTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffvalue Tff7b72< Te6edf3otherTff7b72.Td2a8ffvalue
Tff7b72return Tff7b72NotImplemented

Tff7b72def Tff7b72__repr__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3packet_name Tff7b72= Te6edf3PacketTypesTff7b72.Td2a8ffNamesTb4b4b4[Tff7b72selfTff7b72.Td2a8ffpacketTypeTb4b4b4]
Tff7b72except Tf85149IndexErrorTb4b4b4:
Te6edf3packet_name Tff7b72= Ta5d6ff"Ta5d6ffUnknownTa5d6ff"

Tff7b72return Ta5d6fffTa5d6ff"Ta5d6ffReasonCode(Tffd700{Te6edf3packet_nameTffd700}Ta5d6ff, Tffd700{Tff7b72selfTff7b72.Td2a8ffgetNameTb4b4b4(Tb4b4b4)Tffd700!r}Ta5d6ff)Ta5d6ff"

Tff7b72def Tff7b72__str__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffgetNameTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffjsonTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffgetNameTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffpackTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tffa657bytearrayTb4b4b4(Tb4b4b4[Tff7b72selfTff7b72.Td2a8ffvalueTb4b4b4]Tb4b4b4)

Tf0883e@property
Tff7b72def Td2a8ffis_failureTb4b4b4(Tff7b72selfTb4b4b4) Tff7b72-Tff7b72> Tffa657boolTb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffvalue Tff7b72>Tff7b72= T79c0ff0x80


Tff7b72class T56d364_CompatibilityIsInstanceTb4b4b4(Tffa657typeTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__instancecheck__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3otherTb4b4b4: Te6edf3AnyTb4b4b4) Tff7b72-Tff7b72> Tffa657boolTb4b4b4:
Tff7b72return Tffa657isinstanceTb4b4b4(Te6edf3otherTb4b4b4, Te6edf3ReasonCodeTb4b4b4)


Tff7b72class T56d364ReasonCodesTb4b4b4(Te6edf3ReasonCodeTb4b4b4, Te6edf3metaclassTff7b72=Te6edf3_CompatibilityIsInstanceTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Te6edf3warningsTff7b72.Td2a8ffwarnTb4b4b4(Ta5d6ff"Ta5d6ffReasonCodes is deprecated, use ReasonCode (singular) insteadTa5d6ff"Tb4b4b4,
Te6edf3categoryTff7b72=Tf85149DeprecationWarningTb4b4b4,
Te6edf3stacklevelTff7b72=T79c0ff2Tb4b4b4,
Tb4b4b4)
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────